1. Field of the Invention
The present invention relates generally to data communications networks, and specifically to congestion control.
2. Background Art
In most networks, it is possible for a server to become subject to a level of load that is beyond its designed capacity for a period of time. For example, this could be due to an outage event such as a power failure, whose restoration causes all affected clients to attempt to reconnect at roughly the same time. When this situation arises, the server will have to drop many of the client requests because the server becomes overloaded.
In a simple case, where the interaction between the client and the server is a single request/response pair, existing algorithms for determining which messages to drop are usually sufficient. These are usually pseudo-random and based on dropping messages that arrive after a given message queue is full or that are of a certain age in the queue. The messages are typically dropped before they are added to a queue.
However, if the interaction between the client and the server requires multiple request/response pairs in order for the overall exchange to succeed, a message being dropped part way through the exchange by the server will most often force the client to restart the exchange from the beginning. This wastes the resources that both the client and the server have expended, increases the time for the client to finish the exchange and introduces additional messages into the network, which will further worsen the problem.
What is therefore needed is methods for congestion control at servers that recognize the unique characteristics associated with exchanges between a client and a server that require multiple request/response pairs for the overall exchange to succeed.
In an embodiment of the present invention, a method for congestion control by a AAA server is provided. The method includes receiving at the AAA server from a network access server (NAS) an initial message for a session that was initiated as a result of a network request from a client device or software object. A hint indicator is embedded within a response message to the received message. The hint indicator identifies a processing priority for subsequent messages received from the client device by the AAA server. A response message is transmitted having the embedded hint indicator to the network access server. A subsequent message is received from the network access server at the AAA server within the session. The AAA server determines whether the subsequent message contains the hint indicator. Finally, the AAA server determines how to process the message based on the hint indicator. In an alternative embodiment, the AAA server tracks the number of rounds of message exchange that have occurred within a session, and includes a priority indicator in response messages. Further processing by the AAA server factors in whether the hint indicator is presence and the priority level.
In an alternative embodiment, a method for congestion control at the AAA server is provided. At the AAA server a message is received from a network access server (NAS) for a session that was initiated as a result of a network request from a client device or software object. The message is stored and timestamped in an ingress message queue. A congestion state for the AAA server is determined, when the message is dequeued from the ingress message queue. The congestion state is based on an ingress queue state and a message age state. The ingress queue state is based on the amount of messages within the ingress queue. The message age state is based on the duration the message has been in the ingress queue. Finally, the message is processed based on at least the congestion state. In alternative embodiments, the processing of a message is based on the congestion state, the type of message and the number of round trip messages that have occurred within an authentication session.
Further embodiments, features, and advantages of the invention, as well as the structure and operation of the various embodiments of the invention are described in detail below with reference to accompanying drawings
The present invention will now be described with reference to the accompanying drawings. In the drawings, like reference numbers can indicate identical or functionally similar elements. Additionally, the left-most digit(s) of a reference number may identify the drawing in which the reference number first appears.